package com.sf.sms.software.service;

import com.sf.sms.software.entity.Software;
import com.sf.sms.software.entity.dto.SoftwareDTO;

import java.util.List;

/**
 * 软件操作：接口类
 * Created by zhangbo 01084074 on 2016/8/25.
 */
public interface SoftwareService {

    /**
     * 创建软件
     *
     * @param software  软件对象信息
     * @return
     */
    int createSoftware(Software software);

    /**
     * 审核通过软件
     *
     * @param softwareId    软件主键id
     * @return
     *
     * @author zhangbo 01084074 on 2016/8/29.
     */
    String reviewSoftwareSuccess(Long softwareId);

    /**
     * 根据软件分类查询软件
     *
     * @param categoryId    软件分类主键id
     * @return  软件结果集
     *
     * @author zhangbo 01084074 on 2016/8/29.
     */
    List<SoftwareDTO> getSoftwareByCategoryId(Long categoryId, Integer pageNum);

    /**
     * 查询所有软件
     *
     * @param pageNum   分页：页数
     * @return  软件结果集
     *
     * @author zhangbo 01084074 on 2016/8/31.
     */
    List<SoftwareDTO> getAllSoftware(Integer pageNum);

    /**
     * 查询所有正在审核中的软件
     *
     * @return  软件结果集
     *
     * @author zhangbo 01084074 on 2016/9/1.
     */
    List<SoftwareDTO> getReviewSoftware(Integer pageNum);

    /**
     * 根据软件分类查询软件
     *
     * @param categoryId    软件分类主键id
     * @return  软件结果集
     *
     * @author zhangbo 01084074 on 2016/9/1.
     */
    List<SoftwareDTO> getReviewSoftwareByCategory(Long categoryId, Integer pageNum);

    /**
     * 根据ID获取软件对象
     * @param id 软件主键id
     * @return 软件结果集
     */
    Software getSoftwareById(Long id);

    /**
     * 查询软件总数
     *
     * @return  软件结果集
     *
     * @author zhangbo 01084074 on 2016/9/2.
     */
    Long getAllSoftwareCount();

    /**
     * 查询软件总数
     *
     * @param categoryId    软件类型主键id
     * @return  软件结果集
     *
     * @author zhangbo 01084074 on 2016/9/2.
     */
    Long getSoftwareCountByCategoryId(Long categoryId);

    List<SoftwareDTO> searchSoftware(String content, Integer pageNum);

    Long searchSoftwareCount(String content);

    Long getReviewSoftwareCount();

    Long getReviewSoftwareByCategoryCount(Long categoryId);
}
